Activation Function 2

신경망에서 값을 출력받는 3가지 방법

신경망의 출력층에서는 문제의 유형에 따라 적절한 활성화 함수를 사용하여 최종 출력을 결정한다. 출력을 받는 방법은 크게 3가지로 나눌 수 있다.

1. Value로 출력받기 (회귀)

활성화 함수 없음 - 입력값을 그대로 출력한다.

f(x)=xf(x) = x

특징:

  • 모든 실수값을 출력할 수 있다
  • 연속적인 값을 예측하는 문제에 사용된다
  • 활성화 함수가 없어 계산이 빠르다

용도:

  • 회귀 문제: 주택 가격 예측, 온도 예측, 매출 예측, 혈중지방 예측 등
  • 손실 함수: mse (Mean Squared Error) 또는 mae (Mean Absolute Error)

예시:

# TensorFlow/Keras 예시
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1)  # 활성화 함수 없음
])
model.compile(optimizer='adam', loss='mse')

2. 이진 분류: Sigmoid

Sigmoid 함수를 사용하여 0과 1 사이의 확률값을 출력한다.

σ(x)=11+ex\sigma(x) = \frac{1}{1 + e^{-x}}

특징:

  • 출력 범위: 0과 1 사이의 값
  • 출력값을 확률로 해석할 수 있다
  • 출력값이 0.5보다 크면 양성 클래스, 작으면 음성 클래스로 분류한다

용도:

  • 이진 분류: 스팸 메일 분류, 질병 진단, 고객 이탈 예측 등
  • 손실 함수: binary_crossentropy
  • 출력 뉴런 수: 1개

예시:

# TensorFlow/Keras 예시
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy')

3. 다중 분류: Softmax

Softmax 함수를 사용하여 여러 클래스에 대한 확률 분포를 출력한다.

Softmax(xi)=exij=1nexj\text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{n} e^{x_j}}

특징:

  • 각 출력값은 0과 1 사이이며, 모든 출력의 합은 1이다
  • 각 클래스에 대한 확률 분포를 나타낸다
  • 가장 높은 확률을 가진 클래스를 예측 결과로 선택한다

용도:

  • 다중 분류: 이미지 분류(강아지, 고양이, 새 등), 감정 분석(긍정, 중립, 부정) 등
  • 손실 함수: categorical_crossentropy 또는 sparse_categorical_crossentropy
  • 출력 뉴런 수: 클래스 개수만큼

예시:

# TensorFlow/Keras 예시 (10개 클래스 분류)
model = tf.keras.Sequential([
    tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='categorical_crossentropy')

요약

방법활성화 함수출력 형태용도손실 함수
Value없음 (Linear)실수값회귀mse, mae
이진 분류Sigmoid0~1 확률이진 분류binary_crossentropy
다중 분류Softmax확률 분포 (합=1)다중 분류categorical_crossentropy